<?php
/**
 * Define un controlador de excepciones personalizado
 * para la aplicación. El contexto principal dispondrá
 * inicialmente un controlador de excepciones propio,
 * pero los usuarios podrán agregar nuevos controladores
 * que se invocarán paralelamente al desencadenarse un
 * error u excepción.
 */
interface ExceptionHandler
{
	/**
	 * Notifica las exepciones que ocurran.
	 *
	 * @var int
	 */
	const NOTIFY_EXCEPTIONS = 2;

	/**
	 * Notifica los errores que ocurran.
	 *
	 * @var int
	 */
	const NOTIFY_ERRORS = 4;

	/**
	 * Notifica todos los errores y excepciones.
	 *
	 * @var int
	 */
	const NOTIFY_ALL = 8;

	/**
	 * Devuelve el nivel actual de notificación. Podrá ser
	 * cualquiera de las constantes definidas en la interfaz.
	 */
	function getNotifyLevel();

	/**
	 * Establece el nivel actual de notificación.
	 */
	function setNotifyLevel( int $errorLevel );

	/**
	 * Se desencadena cuando se produce una excepción
	 * no controlada en la aplicación.
	 */
	function exceptionEvent( ServerException $exception );

	/**
	 * Se desencadena cuando se produce un
	 * error no controlado de PHP.
	 */
	function errorEvent( $errno, $errstr, $errfile, $errline, $errcontext );

	/**
	 * Establece esta controlador de excepciones como el
	 * controlador predeterminado del sistema.
	 */
	function attachHandler();

	/**
	 * Elimina este controlador de excepciones del sistema. Si
	 * no es el controlador predeterminado, no realiza ninguna
	 * operación.
	 */
	function dettachHandler();
}
?>
